package com.example.factory.api.facade;

import com.example.factory.api.dto.DtoAuditDetails;
import com.example.factory.api.dto.DtoReport;
import com.example.factory.api.dto.DtoReporterReport;
import com.example.factory.api.dto.Response;
import com.example.factory.api.dto.form.DtoReportForm;
import com.example.factory.api.dto.form.DtoReporterReportForm;

import java.util.List;

/**
 * @author Lei Tao
 */
public interface ReportFacade {
    Response<DtoReport> saveOrUpdate(DtoReportForm dtoReportForm);

    Response<List<DtoReport>> list();

    Response<DtoReport> details(String reportGuid);

    Response<Void> delete(String reportGuid);

    Response<List<DtoReport>> listByScorerGuid(String reportGuid);

    Response<List<DtoReport>> listByDtoReporterGuid(String reporterGuid);

    Response<DtoReporterReport> reportDetails(String reportGuid);

    Response<Void> commit(DtoReporterReportForm dtoReporterReportForm);

    Response<DtoReporterReport> audit(String reportGuid);

    Response<List<DtoAuditDetails>> auditDetails(String reportGuid);
}
